package com.jd.jr.insights.dm.dim;

import com.jd.jr.insights.dm.dim.controller.DimTransformController;
import com.jd.jr.insights.dm.dim.controller.HomeController;
import com.jd.jr.insights.dm.dim.dao.model._MappingKit;
import com.jd.jr.insights.dm.dim.route.AdminRoute;
import com.jd.jr.insights.dm.dim.route.RootRoute;
import com.jd.jr.insights.dm.dim.util.LOG;
import com.jfinal.config.*;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.template.Engine;



/**
 * Created by guoxuefei1 on 2017/7/12.
 */
public class RootConfig extends JFinalConfig {

    String rootPath = PathKit.getRootClassPath();


    public void configConstant(Constants constants) {
        constants.setDevMode(true);
        constants.setError404View("/404.html");
    }

    public void configRoute(Routes routes) {
        //这里只实现路由器调用，不实现具体逻辑
        routes.add("/", DimTransformController.class);
        routes.add(new RootRoute());
        routes.add(new AdminRoute());
//         routes.add("/rule", RuleController.class);

    }

    public void configEngine(Engine engine) {

    }

    public void configPlugin(Plugins plugins) {

//        #?createDatabaseIfNotExist=true;
//##characterEncoding=utf-8;useUnicode=true;useSSL=false
        String rootPath = PathKit.getRootClassPath();
       LOG.INFO(this.getClass().getName(),"rootPath"+rootPath);
        //数据源配置文件路径
        String dateSourceProp =  "props/datasource.properties";

        //载入配置文件夹
//        loadPropertyFile(dateSourceProp);
//        String jdbcUrl=getProperty("jf_dim.mysql.jdbc.url");
//        String username=getProperty("jf_dim.mysql.jdbc.username");
//        String password=getProperty("jf_dim.mysql.jdbc.password");
//

        Prop prop = PropKit.use(dateSourceProp);
        String jdbcUrl = prop.get("jf_dim.mysql.jdbc.url");
        String username = prop.get("jf_dim.mysql.jdbc.username");
        String password = prop.get("jf_dim.mysql.jdbc.password");



        DruidPlugin druidPlugin = new DruidPlugin(jdbcUrl,username,password);
        LOG.INFO(this.getClass().getName(),druidPlugin.getDataSource()+"");
        plugins.add(druidPlugin);  //加入连接池

        ActiveRecordPlugin activeRecordPlugin=new ActiveRecordPlugin(druidPlugin);
        plugins.add(activeRecordPlugin);//j加入数据访问插件

      //使用类jFInal生成器
        _MappingKit.mapping(activeRecordPlugin);

//        activeRecordPlugin.addMapping("jf_dim_rule", RuleModel.class);
//        activeRecordPlugin.addMapping("jf_dim_dept", DeptModel.class);
        //arp.addMapping("article", "article_id", Article.class);
//        另外，以上代码中 arp.addMapping(“user”, User.class)，表的主键名为默认为“id”，如果主
//        键名称为 “ user_id”则需要手动指定，如： arp.addMapping(“user”, “user_id”, User.class)。


        /**
         * 配置调度插件
         */
//        Cron4jPlugin cron4jPlugin=new Cron4jPlugin();
//        cron4jPlugin.addTask("treedimTrans1",new TreeDimTransTask());
//        plugins.add(cron4jPlugin);


        //配置文件加载
//        Cron4jPlugin cron4jPlugin=new Cron4jPlugin(PropKit.use("cron4j.properties"),"cron4j");
//        plugins.add(cron4jPlugin);

    }

    /**
     * 配置全局拦截器
     *
     * @param interceptors
     */
    public void configInterceptor(Interceptors interceptors) {
/*
        //配置全局控制器拦截器
         interceptors.addGlobalActionInterceptor(new AuthInterceptor());

         //配置全局业务层全局拦截器
        interceptors.addGlobalServiceInterceptor(new AuthInterceptor());*/


    }

    public void configHandler(Handlers handlers) {




    }
}
